/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package ejercicio.practica4;

import java.util.Random;
import java.util.Scanner;

/**
 *
 * @author manolo
 */
public class MatVector {

    private static int[][] matrizA;
    private static int[] matrizB;
    private static int[] resultado;
    private static int m, n;
    private static Scanner teclado = new Scanner(System.in);

    public static void main(String[] args) {
        int opcion = 0;
        do {
            System.out.println("");
            System.out.println("********************************");
            System.out.println("* MENU MULTIPLICACION MATRICES *");
            System.out.println("********************************");
            System.out.println("1.- Introducción de matrices manualmente.");
            System.out.println("2.- Introducción de matrices automaticamente.");
            System.out.println("0.- Salir.");
            opcion = teclado.nextInt();

            switch (opcion) {
                case 1:
                    manual();
                    producto();
                    mostrarResultado();
                    break;
                case 2:
                    aleatoria();
                    producto();
                    mostrarResultado();
                    break;
                case 0:
                    System.exit(0);
                default:
                    System.out.println("Opción errónea.");
            }

        } while (opcion != 0);
    }

    private static void manual() {

        System.out.println("Introduzca la dimensión de las filas de la matriz A: ");
        m = teclado.nextInt();
        System.out.println("Introduzca la dimensión de las columnas de la matriz A: ");
        n = teclado.nextInt();
        matrizA = new int[m][n];
        matrizB = new int[n];

        System.out.println("Matriz A: ");
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                System.out.print("A(" + (i + 1) + ", " + (j + 1) + "): ");
                matrizA[i][j] = teclado.nextInt();
            }
        }

        System.out.println("Matriz B: ");
        for (int i = 0; i < n; i++) {
            System.out.print("B(" + (i + 1) + ", 1): ");
            matrizB[i] = teclado.nextInt();
        }
    }

    private static void aleatoria() {
        Random rm = new Random();

        System.out.println("Introduzca la dimensión de las filas de la matriz A: ");
        m = teclado.nextInt();
        System.out.println("Introduzca la dimensión de las columnas de la matriz A: ");
        n = teclado.nextInt();
        matrizA = new int[m][n];
        matrizB = new int[n];

        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                matrizA[i][j] = rm.nextInt();
            }
        }
        for(int i=0;i<n;i++){            
              matrizB[i] = rm.nextInt();
        }
    }

    private static void producto() {
        {
            resultado = new int[m];
            for (int i = 0; i < m; i++) {
                for (int j = 0; j < n; j++) {
                    resultado[i] = 0;
                    for (int k = 0; k < n; k++) {
                        resultado[i] += matrizA[i][k] * matrizB[k];
                    }
                }
            }

        }
    }

    private static void mostrarResultado() {
        for (int i = 0; i < m; i++) {

            System.out.println(resultado[i]);
        }
    }
}
